package pers.cj.pdos.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import pers.cj.pdos.entity.Goods;
import pers.cj.pdos.entity.GoodsCost;
import pers.cj.pdos.entity.GoodsStock;
import pers.cj.pdos.entity.SaleGoods;
import pers.cj.pdos.vo.InGoodsGoodsVo;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 当每次进货、进货入库、组装拆卸、组装拆卸入库时，商品成本表 就增加对应商品的总数量和总金额，计算成本价；当每次进货、进货 Mapper 接口
 * 注意，其中的成本价和数量都是对应商品的基本单位的
 * </p>
 *
 * @author chenj
 * @since 2020-03-06
 */
public interface GoodsCostMapper extends BaseMapper<GoodsCost> {

    /**
     * 批量插入,此时不插入成本价,由mapper内部sql来处理，当goods_id重复是，更新增加数量和总金额;
     * 当插入成功后，insertBatch的第二个子sql会自动更新其成本价
     * 注意，其中的成本价和数量都是对应商品的基本单位的
     * @param list
     */
    void insertBatch(@Param("list") List<GoodsCost> list);

    /**
     * 根据参数map中的goodsId来获取成本价列表
     * @param map
     * @return
     */
    List<GoodsCost> listByGoodsMap(@Param("map") Map map);

    /**
     * 根据list中单个元素的goodsId来获取成本表
     * @param list
     * @return
     */
    List<GoodsCost> listByGoodsList(@Param("list") List list);

    void batchDeleteByGoodsList(@Param("list")List<Goods> list);
}
